package dao

import (
	"time"
)

// 这是 GrouponRules 的全局公开dao对象，被service层调用!
var GrouponRulesDao = grouponRulesDao{}

// 团购规则表
// 这是 groupon_rules表 的实体类,这个实体类中的字段可以减少，但是不能在其基础上增加!
type GrouponRules struct {
	Id             int32     `json:"id" form:"id" v:"id" db:"id"`
	GoodsId        int32     `json:"goods_id" form:"goods_id" v:"goods_id" db:"goods_id"`                             // 商品表的商品ID
	GoodsName      string    `json:"goods_name" form:"goods_name" v:"goods_name" db:"goods_name"`                     // 商品名称
	PicUrl         string    `json:"pic_url" form:"pic_url" v:"pic_url" db:"pic_url"`                                 // 商品图片或者商品货品图片
	Discount       float64   `json:"discount" form:"discount" v:"discount" db:"discount"`                             // 优惠金额
	DiscountMember int32     `json:"discount_member" form:"discount_member" v:"discount_member" db:"discount_member"` // 达到优惠条件的人数
	ExpireTime     time.Time `json:"expire_time" form:"expire_time" v:"expire_time" db:"expire_time"`                 // 团购过期时间
	Status         int16     `json:"status" form:"status" v:"status" db:"status"`                                     // 团购规则状态，正常上线则0，到期自动下线则1，管理手动下线则2
	AddTime        time.Time `json:"add_time" form:"add_time" v:"add_time" db:"add_time"`                             // 创建时间
	UpdateTime     time.Time `json:"update_time" form:"update_time" v:"update_time" db:"update_time"`                 // 更新时间
	Deleted        int8      `json:"deleted" form:"deleted" v:"deleted" db:"deleted" gm:"deleted"`                    // 逻辑删除

}

// 注意:这是 GrouponRules 的私有dao对象，只能在dao层内使用!
type grouponRulesDao struct {
	InsertTemplate func(arg GrouponRules) (int64, error)              //插入一条记录
	UpdateTemplate func(arg GrouponRules) (int64, error)              //更新一条记录
	DeleteTemplate func(id int64) (int64, error)                      `args:"id"` //根据传入的主键删除一条记录
	SelectTemplate func(id int64) (GrouponRules, error)               `args:"id"` //根据传入的主键获取一条记录
	List           func(arg GrouponRulesList) ([]GrouponRules, error) //模糊分页查询
}

/*
// 这是 groupon_rules 表的Postman测试参数
// 该结构体中的字段就是: 前后端交互的json字段!
type GrouponRulesPostman struct {
id
goods_id
goods_name
pic_url
discount
discount_member
expire_time
status
add_time
update_time
deleted

}*/

// 这是 groupon_rules 表的批量请求参数
type GrouponRulesReq struct {
	List []GrouponRules `json:"list" form:"list"`
}

// 这是 grouponRulesDao.List()方法的请求参数
type GrouponRulesList struct {
	Page
}
